Various forms of storage systems are used today. These forms include direct attached storage, network attached storage (NAS) systems, storage area networks (SANs), and others. Storage systems are commonly used for a variety of purposes, such as providing multiple users with access to shared data, backing up data and others.
A storage system typically includes at least one computing system (may also be referred to as a “server” or “storage server”) executing a storage operating system configured to store and retrieve data on behalf of one or more client computing systems at one or more storage devices. The storage operating system exports data stored at storage devices as a storage volume. A storage volume is a logical data set which is an abstraction of physical storage, combining one or more physical mass storage devices or parts thereof into a single logical storage object. From the perspective of a client computing system each storage volume can appear to be a single storage device. However, each storage volume can represent storage space in one storage device, an aggregate of some or all of the storage space in multiple storage devices.
In conventional systems, storage servers typically maintain access control lists (ACLs) for controlling access to storage volumes/storage space. Before a client computing system is allowed to access storage space, a storage server typically validates client identification information with a domain controller. This approach has drawbacks, especially when there are a large number of client computing systems that may request access to storage space at any given time via a management console. The management console has to forward each request to the storage operating system. The storage operating system may have to forward each request to the domain controller for validation. After receiving a response from the domain controller, the storage operating system sends a response to the management console that forwards the response to respective client computing systems. This process is inefficient because various modules have to interact before a client request can be processed. Continuous efforts are being made to efficiently process client requests.